<?php
/**
 * 
 * Classe genérica dos controllers do admin
 * @author Ramon Moraes
 *
 */
class AdminController extends CI_Controller{
	
	/**
	 * 
	 * Variável para armazenar os dados que serão passados para a view
	 * @var array
	 */
	protected $_dados;
	
	/**
	 * 
	 * Construtor da classe genérica
	 * @access public
	 * @method __construct
	 */
	public function __construct(){
		parent::__construct();
		
		$this->load->helper('url');
		$this->load->helper('util_helper');
		
		$this->load->library('sessao');
		
		$this->setData('htmlTitle', 'Admin Associação');
		
		$this->setData('imgUrl', base_url() . 'img/admin/');
		$this->setData('cssUrl', base_url() . 'css/admin/');
		$this->setData('jsUrl', base_url() . 'js/admin/');
		
		if($this->isLogged()){
			$adm = new Administrador();
			$u = $this->sessao->userdata('usuario');
			$adm->where('id', $u->id)->get();
			
			$adm->grupo->get();
			$adm->grupo->funcionalidade->get();
			
			$modulos = array();
			foreach($adm->grupo->funcionalidade->all as $func){
				$func->modulo->get();
				$modulos[] = array(
					'nome' => $func->modulo->nome,
					'link' => $func->modulo->alias . '/' . $func->alias
				);
			}
			$this->setData('modulos', $modulos);
		}
	}
	
	public function index($end=null){
		
		$m = $this->getData();
		
		if($end == null)
			redirect('admin/' . $m['modulos'][0]['link']);
		else
			redirect('admin/' . $end . '/cadastro');
	}
	
	/**
	 * 
	 * Função para verificar se usuário está logado
	 * @access public
	 * @method isLogged
	 */
	public function isLogged(){
		return $this->sessao->userdata('logado', true);
	}
	
	/**
	 * 
	 * Função para trazer o usuário logado na sessão
	 * @access public
	 * @method getLoggado
	 */
	public function getLoggado(){
		return $this->sessao->userdata('usuario');
	}
	
	/**
	 * 
	 * Função para carregar a view com o header e o footer
	 * @access public
	 * @method loadView
	 * @param String $view
	 * View a ser carregada
	 * @param boolean $isModal
	 * se for carregar em modal, não carregar header e footer
	 */
	public function loadView($view, $isModal=false){
		
		if($isModal){
			$this->load->view($view, $this->getData());
		}else{
			$this->load->view('admin/layout/header', $this->getData());
			$this->load->view($view, $this->getData());
			$this->load->view('admin/layout/footer', $this->getData());
		}
	}
	
	/**
	 * 
	 * Função para setar os parâmetros que serão passados para a view
	 * @access public
	 * @method setData
	 * @param $key
	 * índice do array
	 * @param $value
	 * valor do parâmetro
	 */
	public function setData($key, $value){
		$this->_dados[$key] = $value;
	}
	
	/**
	 * 
	 * Função para recuperar os parâmetros armazenados
	 * @access public
	 * @method getData
	 */
	public function getData(){
		return $this->_dados;
	}
}